#include <iostream>
#include <vector>


namespace pc
{
    template<class T>
    class queue
    {
    public:
        void push(const T& data)
        {
            data_.push_back(data);
        }
        void pop()
        {
            if(!data_.empty())
            {
                data_.erase(data_.begin());
            }
        }
        bool empty() const
        {
            return data_.empty();
        }
        size_t size() const
        {
            return data_.size();
        }
        T& front()
        {
            return data_.front();
        }
        T& back()
        {
            return data_.back();
        }
        void display()
        {
            for(auto& x : data_)
            {
                std::cout << x << " ";
            }
            std::cout << std::endl;
        }

    private:
        std::vector<T> data_;
    };
};